Skip to content

Lakshmi Bojja Assessment - Implementation of Bank Portal, Banks Buckets Concepts & Automation Framework#37

Open
meghanabl2112 wants to merge 18 commits intoautomationExamples:mainfrom
meghanabl2112:main
Open

Lakshmi Bojja Assessment - Implementation of Bank Portal, Banks Buckets Concepts & Automation Framework#37
meghanabl2112 wants to merge 18 commits intoautomationExamples:mainfrom
meghanabl2112:main

Conversation

@meghanabl2112
Copy link
Copy Markdown

This PR introduces the completed full-stack Node.js/JavaScript application and the heavy-duty Java Maven Automation Framework requested for the Ally Bank assessment to test the application's core logic.

Methodology

This entire project was reconstructed strictly adhering to a Spec-First Workflow:

  1. Every component was rigorously documented via Acceptance Criteria inside the SPECS/ directory prior to any application implementation.
  2. I used [TODO.md] was leveraged to track pending spec execution.
  3. No code modifications were staged or committed without their corresponding TODO being cleared within the exact same change set (ensuring perfect To-Do Hygiene).
  4. If you review the Git history, you'll see a clear separation between the planning phases (documentation) and the execution phases (code implementation).

Key Features Delivered

  • Base Accounts Engine: Endpoints and UI for dynamic account creation.
  • Transactions Layer: Robust logic bridging deposits and withdrawals securely.
  • Smart Savings Buckets Engine: Algorithms capable of auto-distributing unallocated funds into distinct user-defined goals.
  • Base Java Framework Initialization: Maven, RestAssured, and Selenium architectures safely initialized.
  • Page Object Model Foundation: Abstraction of the complex banking Dashboard into clean, reusable Locators and Methods.
  • Advanced Automated Tests: Verification sequences extending from programmatic Endpoint REST checks to active headful Browser UI clicking.
  • Tooling: Built with TestNG and WebDriverManager to automatically handle Chrome driver setups and execute tests in headless mode.

AI Assistance Summary

As permitted in the instructions, I used Cursor AI and GitHub Copilot to speed up the delivery of boilerplate code. Specifically, I used them to scaffold Maven dependencies, build out the initial Express routing, and draft baseline Selenium locators and RestAssured mappings.

However, I intentionally took manual control over the core engineering: I designed the POM structure, implemented explicit WebDriver waits to avoid the brittle tests AI often generates, and structured the TestNG suites to ensure they align with real-world QA best practices.

How to Run

  1. Start the App: Navigate to app/, run npm install, and then npm start (Runs on http://localhost:3000).
  2. Run the Tests: While the server is running, navigate to automation-framework/ and execute mvn clean test.

###Edge Case Coverage & Defensive Programming
In addition to standard happy paths, this project explicitly handles and tests several critical boundary conditions to ensure enterprise reliability:

Application Guardrails (Backend):

Overdraft Protection: The Express API rejects withdrawal transactions that exceed the current unallocated account balance, returning a strict 422 Unprocessable Entity rather than allowing negative balances.
Account-Type Hardening: Savings Buckets are intrinsically locked to Savings accounts. The API actively blocks bucket creation attempts on standard Checking accounts, returning a 400 Bad Request.
Intelligent Allocation: The auto-distribution algorithm utilizes Math.min(deficit, unallocated) to mathematically guarantee funds are never historically over-distributed past the actual raw balance.

Test Automation Guardrails (QA):

Negative API Scenarios Validated: The RestAssured suite programmatically forces the overdraft and invalid-bucket scenarios, successfully asserting that the server catches them and throws the correct 422 and 400 status codes.
Dynamic UI Synchronization (Selenium): The Page Object Model replaces brittle implicit waits with deliberate state pacing to ensure CSS-driven modal popups are fully rendered in the DOM, completely mitigating notorious ElementNotInteractable exceptions.
Remote Pipeline Readiness: Tests are dynamically routed through WebDriverManager using Chrome Headless mode natively, removing physical UI dependencies to prepare the suite for immediate CI/CD integration.

Screenshot 2026-03-26 165752

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant